"""
507. 完美数
简单
相关标签
相关企业
对于一个 正整数，如果它和除了它自身以外的所有 正因子 之和相等，我们称它为 「完美数」。

给定一个 整数 n， 如果是完美数，返回 true；否则返回 false。



示例 1：

输入：num = 28
输出：true
解释：28 = 1 + 2 + 4 + 7 + 14
1, 2, 4, 7, 和 14 是 28 的所有正因子。
示例 2：

输入：num = 7
输出：false


提示：

1 <= num <= 108
"""
import math


class Solution:
    def checkPerfectNumber(self, num: int) -> bool:
        num_s = set()
        for i in range(1,math.ceil(math.sqrt(num))):
            if num%i==0:
                num_s.add(i)
                num_s.add(num/i)
        num_s.discard(num)
        return True if sum(num_s)==num else False
if __name__ == '__main__':
    print(Solution().checkPerfectNumber(28))
